package com.mggz.common.vo;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.type.CollectionType;
import com.mggz.common.util.MapperUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * @Author: Thaddeus
 * @Date: 2023/7/15 9:43
 * @Description: I AM THE STORM!!!
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class EasyUIResult {
    
    // 定义 Jackson 对象: 封装实际数据 select *
    private static final ObjectMapper MAPPER = new ObjectMapper();
    
    // 查询数据的总数量: select count
    private Integer total;
    
    // 分页查询的 list 结果
    private List<?> rows;
    
    public static EasyUIResult formatToList(String json, Class<?> classzz) {
        try {
            // 读取 json 数据的每个节点
            JsonNode jsonNode = MapperUtil.MP.readTree(json);
            
            // 获取其中 "rows" 的数据
            JsonNode data = jsonNode.get("rows");
            
            List<?> tList = null;
            if (data.isArray() && data.size() > 0) {
                tList = MapperUtil.MP.readValue(
                        jsonNode.traverse(),
                        MapperUtil.MP.getTypeFactory().constructCollectionType(List.class, classzz));
            }
            return new EasyUIResult(jsonNode.get("total").intValue(), tList);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    
}
